package com.easyCode.sqlBuilder.sqlInfo;

import com.easyCode.sqlBuilder.SqlInfo;
import lombok.Data;
import org.springframework.core.Ordered;


/**
 * 提供字段sql语句
 * @author zdh
 */
@Data
public abstract class BaseFiledSqlInfo implements SqlInfo,Ordered {
    /**
     * 字段名
     */
    protected String filedName;
    /**
     * 字段类型
     */
    protected String filedType;
    /**
     * 字段长度,对于varchar,char等类型来说是需要进行设置的
     */
    protected String filedLen;
    /**
     * 字段是否为NOT NULL
     */
    protected Boolean notNull = Boolean.TRUE;
    /**
     * 字段是否为自增
     */
    protected Boolean autoIncrement = Boolean.FALSE;
    /**
     * 字段默认值
     */
    protected Object defaultVal;
    /**
     * 字段注释
     */
    protected String comment;
    /**
     * 当前字段的顺序: 不设置默认为最小优先级
     */
    protected Integer order = Integer.MIN_VALUE;


    /**
     * 返回当前字段的顺序
     */
    @Override
    public int getOrder() {
        return order;
    }

    /**
     * @return 根据自身掌握的sql信息构建出一部分或者完整的sql语句
     */
    @Override
    public String buildSql() {
        return doBuildSql();
    }

    protected abstract String doBuildSql();
}
